home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / 001-010 / amok01 / fish / fishinit.mod < prev    next >
Text File  |  1993-11-04  |  3KB  |  155 lines

  1. IMPLEMENTATION MODULE FishInit;
  2.  
  3. FROM SYSTEM IMPORT SHIFT,ADDRESS,ADR,CAST,BITSET;
  4. FROM Graphics IMPORT AnimObPtr,AnimCompPtr,VSpriteFlags,VSpriteFlagSet,
  5.        RastPortPtr,BobPtr,VSpritePtr,BobFlags,BobFlagSet,GetGBuffers,
  6.        InitGMasks,ViewPortPtr,AddAnimOb,SetRGB4,FreeGBuffers;
  7. FROM GfxMacros IMPORT InitAnimate;
  8.  
  9. FROM FishData IMPORT fish1Comp,fish1Bob;
  10.  
  11. CONST
  12.   ANFRACSIZE = 6;
  13.   ALLSTART = 0;
  14.   ANIMHALF = 20H;
  15.  
  16.   DEPTH = 3;
  17.  
  18.   F = {0..3};
  19.  
  20. (*
  21. VAR
  22.   color,color1,color2: ARRAY[0..7] OF INTEGER;
  23.  
  24.   fishOb;
  25.  
  26.   GInfo: GelsInfoPtr;
  27.   head,tail: VSpritePtr;
  28.   boom: CollTablePtr;
  29. *)
  30.  
  31. VAR
  32.   anOb: AnimObPtr;
  33.   color92: ARRAY[0..7] OF INTEGER;
  34.  
  35.   timers : ARRAY[0..16] OF INTEGER;
  36.   i : CARDINAL;
  37.  
  38.   Index : INTEGER;
  39.  
  40.   xtranslations : ARRAY[0..16] OF INTEGER;
  41.   ytranslations : ARRAY[0..16] OF INTEGER;
  42.  
  43.   XVel : ARRAY[0..0] OF INTEGER;
  44.   YVel : ARRAY[0..0] OF INTEGER;
  45.  
  46. PROCEDURE fish1Routine(Ob: AnimObPtr): BOOLEAN;
  47.  
  48. BEGIN
  49.   WITH Ob^ DO
  50.     IF anX>=SHIFT(320,ANFRACSIZE) THEN anX := 0 END;
  51.   END;
  52.   RETURN TRUE;
  53. END fish1Routine;
  54.  
  55. PROCEDURE extrainit(animKey: AnimObPtr; addFlag: BOOLEAN; wR: RastPortPtr);
  56.  
  57. VAR
  58.   acptr,seqptr,sseqptr: AnimCompPtr;
  59.   btr: BobPtr;
  60.   i,depth,sw,sh: INTEGER;
  61.   iptr,i2ptr,pptr: ADDRESS;
  62.   ibufsize,pbufsize: INTEGER;
  63.  
  64. (* animOb inits *)
  65.  
  66. BEGIN
  67.   anOb := animKey;
  68.   anOb^.anX := SHIFT(ALLSTART,ANFRACSIZE);
  69.   anOb^.anY := 0;
  70.  
  71.   anOb^.xAccel := 0;
  72.   anOb^.yAccel := 0;
  73.   anOb^.clock := 0;
  74.  
  75.   acptr := anOb^.headComp;
  76.   WHILE acptr#NIL DO
  77.     acptr^.animBob^.bobVSprite^.x :=
  78.         SHIFT(anOb^.anX + xtranslations[Index] + ANIMHALF,-ANFRACSIZE);
  79.     acptr^.animBob^.bobVSprite^.y :=
  80.         SHIFT(anOb^.anY + ytranslations[Index] + ANIMHALF,-ANFRACSIZE);
  81.     sseqptr := acptr;
  82.     seqptr := acptr;
  83.     REPEAT
  84.       WITH seqptr^ DO
  85.         animBob^.flags := BobFlagSet{bobIsComp};
  86.         animBob^.bobVSprite^.flags := VSpriteFlagSet{saveBack,overlay};
  87.         timeSet := timers[Index];
  88.         xTrans := xtranslations[Index];
  89.         yTrans := ytranslations[Index];
  90.         animBob^.bobVSprite^.planeOnOff := 10H;
  91.         INC(Index);
  92.       END;
  93.       seqptr := seqptr^.nextSeq;
  94.     UNTIL (seqptr=NIL) OR (seqptr=sseqptr);
  95.     acptr := acptr^.nextComp;
  96.   END;
  97.  
  98.   IF NOT(GetGBuffers(anOb, wR, TRUE)) THEN HALT END;
  99.  
  100.   InitGMasks(anOb);
  101. END extrainit;
  102.  
  103. PROCEDURE animinit(animKey: AnimObPtr;vp: ViewPortPtr;
  104.                    wR: RastPortPtr);
  105.  
  106. VAR
  107.   i: INTEGER;
  108.  
  109. BEGIN
  110.   Index := 0;
  111.   fishOb.xVel := XVel[0];
  112.   fishOb.yVel := YVel[0];
  113.  
  114.   fishOb.headComp := ADR(fish1Comp);
  115.  
  116.   fish1Bob.before := NIL;
  117.   fish1Bob.after := NIL;
  118.  
  119.   InitAnimate(animKey);
  120.  
  121.   extrainit(ADR(fishOb), TRUE, wR);
  122.   AddAnimOb(ADR(fishOb), animKey,wR);
  123.  
  124.   FOR i := 0 TO 7 DO
  125.     SetRGB4(vp,i ,
  126.       CAST(INTEGER, CAST(BITSET,SHIFT(color92[i],-8)) * F),
  127.       CAST(INTEGER, CAST(BITSET,SHIFT(color92[i],-4)) * F),
  128.       CAST(INTEGER, CAST(BITSET,color92[i]          ) * F));
  129.   END;
  130. END animinit;
  131.  
  132. PROCEDURE freeanimobj(RPort: RastPortPtr);
  133.  
  134. BEGIN
  135.     FreeGBuffers(ADR(fishOb),RPort,TRUE);
  136. END freeanimobj;
  137.  
  138. BEGIN
  139.   color92[0] := 028FH;
  140.   color92[1] := 0FFCH;
  141.   color92[2] := 0FBFH;
  142.   color92[3] := 0FD0H;
  143.   color92[4] := 0F30H;
  144.   color92[5] := 090DH;
  145.   color92[6] := 00FFH;
  146.   color92[7] := 00D9H;
  147.   FOR i:=0 TO 16 DO
  148.     timers[i] := 1;
  149.     xtranslations[i] := SHIFT(0,ANFRACSIZE);
  150.     ytranslations[i] := SHIFT(0,ANFRACSIZE);
  151.   END;
  152.   XVel[0] := SHIFT(4,ANFRACSIZE);
  153.   YVel[0] := SHIFT(0,ANFRACSIZE);
  154. END FishInit.
  155.